<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数值类型转换</title>
</head>
<body>
    <script>


//  Number()

//  0b101
// 0o12
// 0x12

// 转换的内容当做一个整体来处理
// 如果可以转成一个合法数字 则转换成数字
// 如果不能转成一个合法的数字 则转换成NaN
// true -> 1
// false -> 0
// var num1 = 'kangbazi';
// console.log(typeof(num1));

// var num2 = Number(num1);
// console.log(typeof(num2));  // number
// console.log(num2);// NaN 因为kangbazi 没法转成一个合法的数字 所以转换成NaN
// console.log(num2+100);//NaN
// console.log('kangbazi'+100);


// console.log(Number(true)); // true 1
// console.log(Number(false));// 0 

// var test;
// console.log(Number(test));
// console.log(Number(null));


//parseInt()  转成整数
// 不管转换什么 都是一位一位的对待  'abc'
// 如果第一位不能转成合法的数字  那么就立马输出 NaN 然后停止转换 
// 如果第一位能转成合法的数字  那么保留第一位 然后继续看第二位 
// 以此类推直到结束 
// true  NaN
// false  NaN
// 不认小数点 

//  123 
//  '123'

// var test = '123abc';

// console.log(parseInt(test));// 123 这个abc 就是普通字符串 所以没法转成合法的数
// console.log(parseInt(test,16));
// // 告诉转换器 123abc是一个16进制的数字 所以最终结果是转成10进制以后输出
// console.log(parseInt('哈哈'));// NaN
// console.log(parseInt('1010101'));// 1010101
// console.log(parseInt('1010101',2));// 2进制转成10进制的结果   85 

// console.log(parseInt('123.45'));// .不知道转成那个数字 所以停止 最终输出123
// console.log(parseInt('123.45',10));// 123
// var test = true
// var test1 = false
// console.log(parseInt(test));//NaN
// console.log(parseInt(test1));// NaN
// var test;
// console.log(parseInt(test));// NaN
// console.log(parseInt(null));// NaN




//parseFloat()
// 也是以为一位的对待  同parseInt 
// 如果第一位不能转成合法的值 那么就立马输出 NaN 然后停止转换 
// 如果第一位可以转换 那么保留第一位 继续下一位  
// 识别小数点
// var test = '123.45';
// console.log(parseFloat(test));// 123.45
// console.log(parseFloat('123.45abc'));// 123.45
// // console.log(parseFloat('abc123.45'));// 123.45
// var test;
// console.log(parseFloat(test));// NaN
// console.log(parseFloat(null));

// 判断一个数值是否是NaN

// // isNaN()  只要带is的工具 结果不出意外一定是布尔类型  
// // 如果是NaN 则返回true  否则返回false
// console.log(isNaN(parseFloat('abc123.456')));// true
// console.log(isNaN(parseFloat('123.456abc')));// false 

// console.log(parseFloat('abc123.4576')+100) // NaN 
// console.log(NaN == NaN) // 结果一定是布尔类型 要么true 要么false


// NaN 跟任何数字运算 结果一定是NaN


// NaN  不等于NaN   








    </script>
</body>
</html>